package br.com.gkarian.dao;

import java.util.List;

import org.apache.log4j.Logger;
import org.hibernate.Session;
import org.hibernate.SessionFactory;

import br.com.caelum.vraptor.ioc.Component;
import br.com.gkarian.dao.interfaces.UsuarioDAO;
import br.com.gkarian.model.Usuario;

@Component
public class UsuarioDAOImpl implements UsuarioDAO {

	private SessionFactory sf;
	
	private Logger logger = Logger.getLogger(this.getClass().getName());
	
	public UsuarioDAOImpl(SessionFactory sf) {
		logger.info("Construtor do UsuarioDAO");
		this.sf = sf;
	}
	
	private Session getSession() {
		return this.sf.getCurrentSession();
	}

	@Override
	public void save(Usuario entity) {
		logger.info("Entrou no save do UsuarioDAO");
		getSession().save(entity);
		logger.info("Saiu no save do UsuarioDAO");
	}

	@Override
	public void update(Usuario entity) {
		getSession().update(entity);
	}

	@Override
	public void delete(Usuario entity) {
		getSession().delete(entity);
	}
	
	@Override
	@SuppressWarnings("unchecked")
	public List<Usuario> listaTudo() {
	    return getSession().createCriteria(Usuario.class).list();
    }


}
